1. Technical Field
The present invention relates in general to a method and system for developing computer software systems. More particularly, the present invention relates to a system and method for providing a topography oriented to customer needs and topography neutral components installable on one or more topographies.
2. Description of the Related Art
Traditional software products are designed and implemented with a particular management philosophy or methodology focus. For example, a distributed software product may be designed with a client-server framework to support distributing application functionality on client computers while maintaining a link to a more centralized server system. On the other hand, a centralized system may be designed and deployed with tight integration between user interfaces and central processing because all processing is performed on a large centralized system.
Customers of software products have a particular culture that is manifested in each customer's management philosophy, or methodology, as well as each customer's infrastructure. To some extent, the type of business in which the customer is engaged helps determine the philosophy and infrastructure that will be employed.
In traditional systems, customers are often faced with surveying a wide variety of software solutions to determine which solution is the best fit for the customer. For example, a small, centralized customer would be ill-suited for a large, distributed software application. While a particular solution may be advantageous to one customer, it may be disastrous to another customer—even if the two customers are in the same general business field. This again is due to differences in the customers' management philosophies and methodologies. While the solution may readily work for one customer, the solution itself assumes or requires a particular management philosophy.
Software developers are faced with an increasing challenge in developing software solutions for a variety of customers with a variety of management philosophies while, at the same time, limiting the number of versions of software products so that each version is profitable and costs incurred maintaining the various versions are reduced. Because of these challenges, software developers often focus an application on one or two general types of customers. For example, a software manufacturer of an accounting package may create one version of a product for a large centralized system deployed on a centralized mainframe that is designed for a large, institutional customer. Because of costs involved in designing the accounting package for a different environment, such as customers with a more distributed management philosophy wherein organizational units are separated into branch offices, the software manufacturer may resist porting the software package to additional environments.
Indeed, adding compatibility for different operating environments (i.e., UNIX™ based, MS-Windows™ based, mainframe (IBM MVS™ based), etc.), causes increased complexity for maintaining and marketing the products to perspective customers. Because of these challenges, many software vendors have selected a particular management philosophy model, such as large customers with centralized philosophies, or smaller customers with distributed philosophies, and focused development areas on the selected philosophy model. Other vendors have addressed these challenges by providing customized software solutions for a particular software area. The challenge with customized solutions, however, is the increased cost and deployment time required versus off-the-shelf software packages, and the challenge of maintaining numerous unique custom solutions.
What is needed, therefore, is a way to separate the topographical aspects of software applications from the particular software applications functions. Topographical aspects are needed to be directed towards particular management philosophies, while software application functions are needed to be neutral of topography constraints and assumptions. Furthermore, what is needed is a method of analyzing software components using a variety of calibration factors that can be combined to form a topography designed for a particular customer.